home *** CD-ROM | disk | FTP | other *** search
/ Aminet 35 / Aminet 35 (2000)(Schatztruhe)[!][Feb 2000].iso / Aminet / dev / src / stefanb_src.lha / Old_Projects / ToolManager / Source / library / ToolManagerLib.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-03-09  |  8.0 KB  |  258 lines

  1. /*
  2.  * ToolManagerLib.h  V2.1.07
  3.  *
  4.  * shared library main include file
  5.  *
  6.  * (c) 1990-1996 Stefan Becker
  7.  */
  8.  
  9. /* System include files */
  10. #include <exec/types.h>
  11. #include <exec/libraries.h>
  12. #include <exec/memory.h>
  13. #include <exec/resident.h>
  14. #include <dos/dos.h>
  15. #include <dos/dostags.h>
  16. #include <devices/timer.h>
  17. #include <envoy/nipc.h>
  18. #include <envoy/errors.h>
  19. #include <graphics/gfxmacros.h>
  20. #include <intuition/intuitionbase.h>
  21. #include <libraries/iffparse.h>
  22. #include <libraries/locale.h>
  23. #include <libraries/screennotify.h>
  24. #include <libraries/toolmanager.h>
  25. #include <libraries/wbstart.h>
  26. #include <prefs/prefhdr.h>
  27. #include <rexx/errors.h>
  28. #include <workbench/workbench.h>
  29. #include <workbench/startup.h>
  30.  
  31. /* System function prototypes */
  32. #include <clib/alib_protos.h>
  33. #include <clib/commodities_protos.h>
  34. #include <clib/diskfont_protos.h>
  35. #include <clib/dos_protos.h>
  36. #include <clib/exec_protos.h>
  37. #include <clib/gadtools_protos.h>
  38. #include <clib/graphics_protos.h>
  39. #include <clib/icon_protos.h>
  40. #include <clib/iffparse_protos.h>
  41. #include <clib/intuition_protos.h>
  42. #include <clib/locale_protos.h>
  43. #include <clib/nipc_protos.h>
  44. #include <clib/rexxsyslib_protos.h>
  45. #include <clib/screennotify_protos.h>
  46. #include <clib/utility_protos.h>
  47. #include <clib/wb_protos.h>
  48. #include <clib/wbstart_protos.h>
  49.  
  50. /* System function pragmas */
  51. #include <pragmas/commodities_pragmas.h>
  52. #include <pragmas/diskfont_pragmas.h>
  53. #include <pragmas/dos_pragmas.h>
  54. #include <pragmas/exec_pragmas.h>
  55. #include <pragmas/gadtools_pragmas.h>
  56. #include <pragmas/graphics_pragmas.h>
  57. #include <pragmas/icon_pragmas.h>
  58. #include <pragmas/iffparse_pragmas.h>
  59. #include <pragmas/intuition_pragmas.h>
  60. #include <pragmas/locale_pragmas.h>
  61. #include <pragmas/nipc_pragmas.h>
  62. #include <pragmas/rexxsyslib_pragmas.h>
  63. #include <pragmas/screennotify_pragmas.h>
  64. #include <pragmas/utility_pragmas.h>
  65. #include <pragmas/wb_pragmas.h>
  66. #include <pragmas/wbstart_pragmas.h>
  67.  
  68. /* ANSI C include files */
  69. #include <stdlib.h>
  70. #include <string.h>
  71.  
  72. /* Compiler specific include files */
  73. #include <lists.h>     /* GetHead() et al. */
  74.  
  75. /* Project specific include files */
  76. #define CATCOMP_NUMBERS
  77. #define CATCOMP_STRINGS
  78. #include "/locale/toolmanager.h"
  79. #include "/ToolManagerPrefs.h"
  80.  
  81. /* Library <-> Handler IPC commands */
  82. #define TMIPC_AllocTMHandle  0
  83. #define TMIPC_FreeTMHandle   1
  84. #define TMIPC_CreateTMObject 2
  85. #define TMIPC_DeleteTMObject 3
  86. #define TMIPC_ChangeTMObject 4
  87.  
  88. /* Image object activation commands */
  89. #define IOC_DEACTIVE 1
  90. #define IOC_ACTIVE   2
  91. #define IOC_FULLANIM 3
  92. #define IOC_CONTANIM 4
  93.  
  94. /* Menu IDs */
  95. #define MENU_CLOSE 0
  96. #define MENU_QUIT  1
  97.  
  98. /* Hook function prototype */
  99. typedef ULONG (*HookFuncPtr)(__A0 struct Hook *, __A1 void *, __A2 void *);
  100.  
  101. /* Data structures */
  102. struct TMHandle {
  103.                  struct Message  tmh_Msg;      /* Library <-> Handler IPC */
  104.                  UBYTE           tmh_Command;  /* Library <-> Handler IPC */
  105.                  UBYTE           tmh_Type;     /* object type */
  106.                  char           *tmh_Object;   /* object name */
  107.                  struct TagItem *tmh_Tags;     /* object parameters */
  108.                  struct List     tmh_ObjectLists[TMOBJTYPES];
  109.                 };
  110.  
  111. struct TMObject {
  112.                  struct MinNode  tmo_Node;
  113.                  struct List     tmo_Links;
  114.                  char           *tmo_Name;
  115.                  UBYTE           tmo_Type;
  116.                  UBYTE           tmo_Pad;
  117.                  /* will be extended different for each object type */
  118.                 };
  119.  
  120. struct TMLink {
  121.                struct MinNode   tml_Node;
  122.                ULONG            tml_Size;     /* size of structure */
  123.                struct TMObject *tml_Linked;   /* linked object */
  124.                struct TMObject *tml_LinkedTo; /* obj. is linked to this obj. */
  125.                void            *tml_Active;   /* linked object is active */
  126.                /* will be extended different for each object type */
  127.               };
  128.  
  129. struct TMLinkImage { /* a link to an Image object */
  130.                     struct TMLink    tmli_Link;
  131.                     struct RastPort *tmli_RastPort; /* Draw images here */
  132.                     UWORD            tmli_LeftEdge; /* (x,y) in RastPort */
  133.                     UWORD            tmli_TopEdge;
  134.                     UWORD            tmli_Width;    /* Image size */
  135.                     UWORD            tmli_Height;
  136.                     struct Image    *tmli_Normal;
  137.                     struct Image    *tmli_Selected;
  138.                    };
  139.  
  140. struct TMTimerReq {
  141.                    struct timerequest  tmtr_Request;
  142.                    struct TMLink      *tmtr_Link;
  143.                   };
  144.  
  145. /* Library internal function prototypes */
  146. /* config.c */
  147. void ReadConfig(void);
  148. void FreeConfig(void);
  149.  
  150. /* dockobj.c */
  151. void ScreenCloseRequest(struct TMObject *, struct Screen *);
  152. void ScreenOpenRequest(struct TMObject *, char *);
  153. void HandleIDCMPEvents(void);
  154.  
  155. /* execobj.c */
  156. BOOL CopyPathList(struct PathList **pla, struct PathList **plc,
  157.                   struct PathList *oldpl);
  158. void FreePathList(struct PathList *pla);
  159.  
  160. /* handler.c */
  161. __geta4 void HandlerEntry(void);
  162.  
  163. /* locale.c */
  164. void GetLocale(void);
  165. void FreeLocale(void);
  166.  
  167. /* objects.c */
  168. BOOL InternalCreateTMObject(struct TMHandle *handle, char *object, ULONG type,
  169.                             struct TagItem *tags);
  170. BOOL CallDeleteTMObject(struct TMObject *tmobj);
  171. BOOL InternalDeleteTMObject(struct TMHandle *handle, char *object);
  172. BOOL InternalChangeTMObject(struct TMHandle *handle, char *object,
  173.                             struct TagItem *tags);
  174. struct TMObject *AllocateTMObject(ULONG size);
  175. struct TMLink *AddLinkTMObject(struct TMHandle *handle, char *object,
  176.                                ULONG type, struct TMObject *linkedto);
  177. void RemLinkTMObject(struct TMLink *tml);
  178. void DeleteAllLinksTMObject(struct TMObject *tmobj);
  179. void CallActivateTMObject(struct TMLink *tml, void *args);
  180.  
  181. /* readiff.c */
  182. struct TMImageData *ReadIFFData(char *name);
  183. void FreeIFFData(struct TMImageData *tmid);
  184.  
  185. /* rexx.c */
  186. BOOL SendARexxCommand(char *command, ULONG len);
  187.  
  188. /* safety.c */
  189. void SafeDeleteCxObjAll(struct CxObj *cxobj, struct TMLink *tml);
  190. void SafeRemoveAppMenuItem(void *appmenu, struct TMLink *tml);
  191. void SafeRemoveAppIcon(void *appicon, struct TMLink *tml);
  192. void SafeRemoveAppWindow(void *appwin, struct TMLink *tml);
  193.  
  194. /* tmhandle.c */
  195. BOOL InternalAllocTMHandle(struct TMHandle *handle);
  196. BOOL InternalFreeTMHandle(struct TMHandle *handle);
  197.  
  198. /* workbench.c */
  199. BOOL GetWorkbench(void);
  200. void FreeWorkbench(void);
  201.  
  202. /* System library base pointers */
  203. extern struct Library *CxBase;
  204. extern struct Library *DOSBase;
  205. extern struct Library *GadToolsBase;
  206. extern struct Library *GfxBase;
  207. extern struct Library *IFFParseBase;
  208. extern struct IntuitionBase *IntuitionBase;
  209. extern struct Library *NIPCBase;
  210. extern struct Library *ScreenNotifyBase;
  211. extern struct Library *SysBase;
  212. extern struct Library *UtilityBase;
  213. extern struct Library *WorkbenchBase;
  214. extern struct Library *WBStartBase;
  215.  
  216. /* Global data */
  217. extern const struct TagItem HandlerProcessTags[];
  218. extern struct MsgPort *LibraryPort;
  219. extern struct MsgPort *DummyPort;
  220. extern struct MsgPort *IDCMPPort;
  221. extern struct MsgPort *TimerPort;
  222. extern struct MsgPort *AppMsgPort;
  223. extern struct MsgPort *BrokerPort;
  224. extern struct MsgPort *ScreenNotifyPort;
  225. extern struct Entity  *LocalEntity;
  226. extern struct timerequest *deftimereq;
  227. extern struct TMHandle *PrivateTMHandle;
  228. extern CxObj *Broker;
  229. extern struct PathList *GlobalPath;
  230. extern BOOL Closing;
  231. extern struct NewBroker BrokerData;
  232. extern struct NewMenu DockMenu[];
  233. extern char ToolManagerName[];
  234. extern char PrefsFileName[];
  235. extern char DefaultNoName[];
  236. extern char DefaultDirName[];
  237. extern char DefaultOutput[];
  238. extern char DefaultPortName[];
  239.  
  240. /* Global defines */
  241. #define TMVERSION     "2.1b"
  242. #define TMLIBREVISION 2
  243. #define TMCRYEAR      "1990-96"
  244.  
  245. #ifdef DEBUG
  246. __stkargs void kputs(char *);
  247. __stkargs char kgetc(void);
  248. __stkargs void kprintf(char *,...);
  249.  
  250. #define DEBUG_PUTSTR(a) kputs(a);
  251. #define DEBUG_GETCHR    kgetc();
  252. #define DEBUG_PRINTF(a,b)  kprintf(a,b);
  253. #else
  254. #define DEBUG_PUTSTR(a)
  255. #define DEBUG_GETCHR
  256. #define DEBUG_PRINTF(a,b)
  257. #endif
  258.